package com.navinfo.tripanalysis.offline.service.impl.huashen;

import com.navinfo.tripanalysis.common.arithmetic.common.OutStatisticsRangeData.RangeAcceleratedSpeedStatisticsData;
import com.navinfo.tripanalysis.common.arithmetic.common.OutStatisticsRangeData.RangeDiffGasOpenPercentStatisticsData;
import com.navinfo.tripanalysis.common.arithmetic.common.OutStatisticsRangeData.RangeDrivingSlopeStatisticsData;
import com.navinfo.tripanalysis.common.arithmetic.common.OuterStatisticData;
import com.navinfo.tripanalysis.common.pojo.RunningType;
import com.navinfo.tripanalysis.common.pojo.RunningTypeEnum;
import com.navinfo.tripanalysis.offline.service.TripStatisticExtendService;
import com.navinfo.tripanalysis.offline.service.impl.AbstractTripStatisticExtendService;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.catalyst.expressions.GenericRow;
import org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.Metadata;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;

import java.util.ArrayList;
import java.util.List;

/**
 * 一汽行程统计的扩展信息服务
 * @author WEB
 */
@RunningType(value = RunningTypeEnum.HS, interfaceClass = TripStatisticExtendService.class )
public class TripStatisticExtendServiceImpl extends AbstractTripStatisticExtendService{

    public StructType createSchema() {
        List<StructField> list = new ArrayList<>();
        /*--start_schema*/
        list.add(new StructField("tid", DataTypes.LongType, true, Metadata.empty()));
        list.add(new StructField("trip_id", DataTypes.IntegerType, true, Metadata.empty()));

        list.add(new StructField("route_start_time", DataTypes.LongType, true, Metadata.empty()));
        list.add(new StructField("route_end_time", DataTypes.LongType, true, Metadata.empty()));
        list.add(new StructField("trip_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("trip_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("trip_duration", DataTypes.IntegerType, true, Metadata.empty()));

        list.add(new StructField("eco_speed_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_speed_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_speed_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_speed_no_coast_mileage", DataTypes.IntegerType, true, Metadata.empty()));

        list.add(new StructField("eco_no_down_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_no_down_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_no_down_duration", DataTypes.IntegerType, true, Metadata.empty()));

        list.add(new StructField("eco_over_no_down_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_over_no_down_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("eco_over_no_down_duration", DataTypes.IntegerType, true, Metadata.empty()));

        //坡度区间统计
        list.add(new StructField("slope_rangef5_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef5_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef5_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef4_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef4_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef4_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef3_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef3_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef3_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef2_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef2_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef2_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef1_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef1_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangef1_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range0_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range0_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range0_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range1_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range1_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range1_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range2_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range2_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range2_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range3_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range3_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range3_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range4_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range4_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range4_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range5_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range5_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_range5_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangeMax_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangeMax_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("slope_rangeMax_fuel", DataTypes.IntegerType, true, Metadata.empty()));

        //油门开度区间
        list.add(new StructField("accelerator_range_0_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range_0_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range_0_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range10_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range10_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range10_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range20_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range20_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range20_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range30_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range30_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range30_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range40_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range40_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range40_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range50_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range50_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range50_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range60_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range60_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range60_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range70_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range70_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range70_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range80_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range80_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range80_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range90_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range90_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range90_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range99_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range99_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range99_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range100_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range100_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_range100_fuel", DataTypes.IntegerType, true, Metadata.empty()));

        //油门开度变化
        list.add(new StructField("accelerator_change_rangef50_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef50_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef50_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef40_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef40_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef40_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef30_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef30_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef30_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef20_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef20_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef20_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef10_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef10_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangef10_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range0_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range0_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range0_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range_eq_0_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range_eq_0_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range_eq_0_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range10_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range10_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range10_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range20_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range20_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range20_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range30_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range30_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range30_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range40_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range40_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range40_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range50_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range50_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_range50_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangeMax_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangeMax_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accelerator_change_rangeMax_fuel", DataTypes.IntegerType, true, Metadata.empty()));

        //速度统计
        list.add(new StructField("speed_range01_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range01_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range01_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range01_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range01_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range01_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range01_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range02_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range03_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range04_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range05_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range06_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range07_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range08_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range09_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range10_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range11_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("speed_range12_pointcount", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_gearslidemileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_rotation", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_accelerator", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("exceed_speed_range_pointcount", DataTypes.IntegerType, true, Metadata.empty()));

        //加速度区间
        list.add(new StructField("accspeed_rangef1_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef1_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef1_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef07_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef07_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef07_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef05_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef05_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef05_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef03_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef03_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef03_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef01_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef01_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangef01_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range0_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range0_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range0_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range_eq_0_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range_eq_0_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range_eq_0_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range01_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range01_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range01_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range03_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range03_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range03_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range05_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range05_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range05_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range07_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range07_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range07_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range1_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range1_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_range1_fuel", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangeMax_mileage", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangeMax_duration", DataTypes.IntegerType, true, Metadata.empty()));
        list.add(new StructField("accspeed_rangeMax_fuel", DataTypes.IntegerType, true, Metadata.empty()));

        //急减速里程
        list.add(new StructField("sharp_deceleration", DataTypes.IntegerType, true, Metadata.empty()));


        /*--end_schema*/

        return new StructType(list.toArray(new StructField[0]));
    }

    public Row toRow(OuterStatisticData statisticData, StructType schema) {
        List<Object> list = new ArrayList<>();
        /*--start_row*/
        list.add(statisticData.getTid());
        list.add(statisticData.getTripId());

        list.add(statisticData.getRouteStartTime());
        list.add(statisticData.getRouteEndTime());
        list.add(statisticData.getTripMileage());
        list.add(statisticData.getTripFuel());
        list.add(statisticData.getTripDuration());

        list.add(statisticData.getEconomicSpeedMileage());
        list.add(statisticData.getEconomicSpeedFuel());
        list.add(statisticData.getEconomicSpeedDuration());
        list.add(statisticData.getEconomicSpeedNoCoastMileage());

        list.add(statisticData.getEcoNoDownMileage());
        list.add(statisticData.getEcoNoDownFuel());
        list.add(statisticData.getEcoNoDownDuration());

        list.add(statisticData.getEcoOverNoDownMileage());
        list.add(statisticData.getEcoOverNoDownFuel());
        list.add(statisticData.getEcoOverNoDownDuration());

        //坡度区间统计
        RangeDrivingSlopeStatisticsData slope = statisticData.getRangeDrivingSlopeStatisticsData();
        if(null != slope) {
            list.add(slope.getSlopeRangeF5_mileage());
            list.add(slope.getSlopeRangeF5_duration());
            list.add(slope.getSlopeRangeF5_fuel());
            list.add(slope.getSlopeRangeF4_mileage());
            list.add(slope.getSlopeRangeF4_duration());
            list.add(slope.getSlopeRangeF4_fuel());
            list.add(slope.getSlopeRangeF3_mileage());
            list.add(slope.getSlopeRangeF3_duration());
            list.add(slope.getSlopeRangeF3_fuel());
            list.add(slope.getSlopeRangeF2_mileage());
            list.add(slope.getSlopeRangeF2_duration());
            list.add(slope.getSlopeRangeF2_fuel());
            list.add(slope.getSlopeRangeF1_mileage());
            list.add(slope.getSlopeRangeF1_duration());
            list.add(slope.getSlopeRangeF1_fuel());
            list.add(slope.getSlopeRange0_mileage());
            list.add(slope.getSlopeRange0_duration());
            list.add(slope.getSlopeRange0_fuel());
            list.add(slope.getSlopeRange1_mileage());
            list.add(slope.getSlopeRange1_duration());
            list.add(slope.getSlopeRange1_fuel());
            list.add(slope.getSlopeRange2_mileage());
            list.add(slope.getSlopeRange2_duration());
            list.add(slope.getSlopeRange2_fuel());
            list.add(slope.getSlopeRange3_mileage());
            list.add(slope.getSlopeRange3_duration());
            list.add(slope.getSlopeRange3_fuel());
            list.add(slope.getSlopeRange4_mileage());
            list.add(slope.getSlopeRange4_duration());
            list.add(slope.getSlopeRange4_fuel());
            list.add(slope.getSlopeRange5_mileage());
            list.add(slope.getSlopeRange5_duration());
            list.add(slope.getSlopeRange5_fuel());
            list.add(slope.getSlopeRangeOver_mileage());
            list.add(slope.getSlopeRangeOver_duration());
            list.add(slope.getSlopeRangeOver_fuel());
        }else {
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
        }

        //油门开度区间
        list.add(statisticData.getGasOpenPercent0Mileage());
        list.add(statisticData.getGasOpenPercent0Duration());
        list.add(statisticData.getGasOpenPercent0Fuel());
        list.add(statisticData.getGasOpenPercent10Mileage());
        list.add(statisticData.getGasOpenPercent10Duration());
        list.add(statisticData.getGasOpenPercent10Fuel());
        list.add(statisticData.getGasOpenPercent20Mileage());
        list.add(statisticData.getGasOpenPercent20Duration());
        list.add(statisticData.getGasOpenPercent20Fuel());
        list.add(statisticData.getGasOpenPercent30Mileage());
        list.add(statisticData.getGasOpenPercent30Duration());
        list.add(statisticData.getGasOpenPercent30Fuel());
        list.add(statisticData.getGasOpenPercent40Mileage());
        list.add(statisticData.getGasOpenPercent40Duration());
        list.add(statisticData.getGasOpenPercent40Fuel());
        list.add(statisticData.getGasOpenPercent50Mileage());
        list.add(statisticData.getGasOpenPercent50Duration());
        list.add(statisticData.getGasOpenPercent50Fuel());
        list.add(statisticData.getGasOpenPercent60Mileage());
        list.add(statisticData.getGasOpenPercent60Duration());
        list.add(statisticData.getGasOpenPercent60Fuel());
        list.add(statisticData.getGasOpenPercent70Mileage());
        list.add(statisticData.getGasOpenPercent70Duration());
        list.add(statisticData.getGasOpenPercent70Fuel());
        list.add(statisticData.getGasOpenPercent80Mileage());
        list.add(statisticData.getGasOpenPercent80Duration());
        list.add(statisticData.getGasOpenPercent80Fuel());
        list.add(statisticData.getGasOpenPercent90Mileage());
        list.add(statisticData.getGasOpenPercent90Duration());
        list.add(statisticData.getGasOpenPercent90Fuel());
        list.add(statisticData.getGasOpenPercent99Mileage());
        list.add(statisticData.getGasOpenPercent99Duration());
        list.add(statisticData.getGasOpenPercent99Fuel());
        list.add(statisticData.getGasOpenPercent100Mileage());
        list.add(statisticData.getGasOpenPercent100Duration());
        list.add(statisticData.getGasOpenPercent100Fuel());

        //油门开度变化
        RangeDiffGasOpenPercentStatisticsData gasOpen = statisticData.getRangeDiffGasOpenPercentStatisticsData();
        if(null != gasOpen) {
            list.add(gasOpen.getDiffGasOpenPercentRangeF50_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeF50_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeF50_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRangeF40_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeF40_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeF40_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRangeF30_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeF30_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeF30_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRangeF20_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeF20_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeF20_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRangeF10_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeF10_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeF10_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRange0_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRange0_duration());
            list.add(gasOpen.getDiffGasOpenPercentRange0_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRangeEq0_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeEq0_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeEq0_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRange10_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRange10_duration());
            list.add(gasOpen.getDiffGasOpenPercentRange10_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRange20_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRange20_duration());
            list.add(gasOpen.getDiffGasOpenPercentRange20_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRange30_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRange30_duration());
            list.add(gasOpen.getDiffGasOpenPercentRange30_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRange40_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRange40_duration());
            list.add(gasOpen.getDiffGasOpenPercentRange40_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRange50_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRange50_duration());
            list.add(gasOpen.getDiffGasOpenPercentRange50_fuel());
            list.add(gasOpen.getDiffGasOpenPercentRangeMax_mileage());
            list.add(gasOpen.getDiffGasOpenPercentRangeMax_duration());
            list.add(gasOpen.getDiffGasOpenPercentRangeMax_fuel());
        }else {
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
        }

        //速度区间统计
        list.add(statisticData.getSpeedRange01Mileage());
        list.add(statisticData.getSpeedRange01Duration());
        list.add(statisticData.getSpeedRange01Fuel());
        list.add(statisticData.getSpeedRange01GearMileage());
        list.add(statisticData.getSpeedRange01Rotation());
        list.add(statisticData.getSpeedRange01GasOpenPercent());
        list.add(statisticData.getSpeedRange01Number());
        list.add(statisticData.getSpeedRange02Mileage());
        list.add(statisticData.getSpeedRange02Duration());
        list.add(statisticData.getSpeedRange02Fuel());
        list.add(statisticData.getSpeedRange02GearMileage());
        list.add(statisticData.getSpeedRange02Rotation());
        list.add(statisticData.getSpeedRange02GasOpenPercent());
        list.add(statisticData.getSpeedRange02Number());
        list.add(statisticData.getSpeedRange03Mileage());
        list.add(statisticData.getSpeedRange03Duration());
        list.add(statisticData.getSpeedRange03Fuel());
        list.add(statisticData.getSpeedRange03GearMileage());
        list.add(statisticData.getSpeedRange03Rotation());
        list.add(statisticData.getSpeedRange03GasOpenPercent());
        list.add(statisticData.getSpeedRange03Number());
        list.add(statisticData.getSpeedRange04Mileage());
        list.add(statisticData.getSpeedRange04Duration());
        list.add(statisticData.getSpeedRange04Fuel());
        list.add(statisticData.getSpeedRange04GearMileage());
        list.add(statisticData.getSpeedRange04Rotation());
        list.add(statisticData.getSpeedRange04GasOpenPercent());
        list.add(statisticData.getSpeedRange04Number());
        list.add(statisticData.getSpeedRange05Mileage());
        list.add(statisticData.getSpeedRange05Duration());
        list.add(statisticData.getSpeedRange05Fuel());
        list.add(statisticData.getSpeedRange05GearMileage());
        list.add(statisticData.getSpeedRange05Rotation());
        list.add(statisticData.getSpeedRange05GasOpenPercent());
        list.add(statisticData.getSpeedRange05Number());
        list.add(statisticData.getSpeedRange06Mileage());
        list.add(statisticData.getSpeedRange06Duration());
        list.add(statisticData.getSpeedRange06Fuel());
        list.add(statisticData.getSpeedRange06GearMileage());
        list.add(statisticData.getSpeedRange06Rotation());
        list.add(statisticData.getSpeedRange06GasOpenPercent());
        list.add(statisticData.getSpeedRange06Number());
        list.add(statisticData.getSpeedRange07Mileage());
        list.add(statisticData.getSpeedRange07Duration());
        list.add(statisticData.getSpeedRange07Fuel());
        list.add(statisticData.getSpeedRange07GearMileage());
        list.add(statisticData.getSpeedRange07Rotation());
        list.add(statisticData.getSpeedRange07GasOpenPercent());
        list.add(statisticData.getSpeedRange07Number());
        list.add(statisticData.getSpeedRange08Mileage());
        list.add(statisticData.getSpeedRange08Duration());
        list.add(statisticData.getSpeedRange08Fuel());
        list.add(statisticData.getSpeedRange08GearMileage());
        list.add(statisticData.getSpeedRange08Rotation());
        list.add(statisticData.getSpeedRange08GasOpenPercent());
        list.add(statisticData.getSpeedRange08Number());
        list.add(statisticData.getSpeedRange09Mileage());
        list.add(statisticData.getSpeedRange09Duration());
        list.add(statisticData.getSpeedRange09Fuel());
        list.add(statisticData.getSpeedRange09GearMileage());
        list.add(statisticData.getSpeedRange09Rotation());
        list.add(statisticData.getSpeedRange09GasOpenPercent());
        list.add(statisticData.getSpeedRange09Number());
        list.add(statisticData.getSpeedRange10Mileage());
        list.add(statisticData.getSpeedRange10Duration());
        list.add(statisticData.getSpeedRange10Fuel());
        list.add(statisticData.getSpeedRange10GearMileage());
        list.add(statisticData.getSpeedRange10Rotation());
        list.add(statisticData.getSpeedRange10GasOpenPercent());
        list.add(statisticData.getSpeedRange10Number());
        list.add(statisticData.getSpeedRange11Mileage());
        list.add(statisticData.getSpeedRange11Duration());
        list.add(statisticData.getSpeedRange11Fuel());
        list.add(statisticData.getSpeedRange11GearMileage());
        list.add(statisticData.getSpeedRange11Rotation());
        list.add(statisticData.getSpeedRange11GasOpenPercent());
        list.add(statisticData.getSpeedRange11Number());
        list.add(statisticData.getSpeedRange12Mileage());
        list.add(statisticData.getSpeedRange12Duration());
        list.add(statisticData.getSpeedRange12Fuel());
        list.add(statisticData.getSpeedRange12GearMileage());
        list.add(statisticData.getSpeedRange12Rotation());
        list.add(statisticData.getSpeedRange12GasOpenPercent());
        list.add(statisticData.getSpeedRange12Number());
        list.add(statisticData.getExceedSpeedRangeMileage());
        list.add(statisticData.getExceedSpeedRangeDuration());
        list.add(statisticData.getExceedSpeedRangeFuel());
        list.add(statisticData.getExceedSpeedRangeGearMileage());
        list.add(statisticData.getExceedSpeedRangeRotation());
        list.add(statisticData.getExceedSpeedRangeGasOpenPercent());
        list.add(statisticData.getExceedSpeedRangeNumber());

        //加速度区间
        RangeAcceleratedSpeedStatisticsData rangeAcceleratedSpeedStatisticsData = statisticData.getRangeAcceleratedSpeedStatisticsData();
        if(null != rangeAcceleratedSpeedStatisticsData) {
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF1_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF1_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF1_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF07_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF07_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF07_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF05_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF05_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF05_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF03_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF03_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF03_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF01_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF01_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeF01_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange0_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange0_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange0_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeEq0_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeEq0_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeEq0_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange01_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange01_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange01_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange03_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange03_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange03_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange05_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange05_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange05_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange07_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange07_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange07_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange1_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange1_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRange1_fuel());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeMax_mileage());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeMax_duration());
            list.add(rangeAcceleratedSpeedStatisticsData.getAcceleratedSpeedRangeMax_fuel());
        }else {
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);

            list.add(null);
            list.add(null);
            list.add(null);
            list.add(null);
        }

        //急减速里程
        list.add(statisticData.getSharpDeceleration());

        /*--end_row*/

        return null==schema ? new GenericRow(list.toArray()) : new GenericRowWithSchema(list.toArray(), schema);
    }


}
